{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第二步，粗调max_depth min_childweight"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "import time\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# path to where the data lies\n",
    "dpath = './data/'\n",
    "train = pd.read_csv(dpath +\"RentListingInquries_FE_train.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_train = train['interest_level']\n",
    "X_train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第一轮参数调整得到的n_estimators最优值（219），其余参数继续默认值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用交叉验证评价模型性能时，用scoring参数定义评价指标。评价指标是越高越好，因此用一些损失函数当评价指标时，需要再加负号，\n",
    "如neg_log_loss，neg_mean_squared_error \n",
    "详见sklearn文档：http://scikit-learn.org/stable/modules/model_evaluation.html#log-loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': range(3, 10, 2), 'min_child_weight': range(1, 6, 2)}"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "max_depth = range(3,10,2)\n",
    "min_child_weight = range(1,6,2)\n",
    "param_test2_1 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2018-01-01 02:15:07\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "xgb2_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=219,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch2_1 = GridSearchCV(xgb2_1, param_grid = param_test2_1, scoring='neg_log_loss',n_jobs=4, cv=kfold)\n",
    "gsearch2_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_1.grid_scores_, gsearch2_1.best_params_,     gsearch2_1.best_score_\n",
    "\n",
    "print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.60231, std: 0.00320, params: {'max_depth': 3, 'min_child_weight': 1},\n",
       "  mean: -0.60268, std: 0.00324, params: {'max_depth': 3, 'min_child_weight': 3},\n",
       "  mean: -0.60254, std: 0.00324, params: {'max_depth': 3, 'min_child_weight': 5},\n",
       "  mean: -0.58876, std: 0.00418, params: {'max_depth': 5, 'min_child_weight': 1},\n",
       "  mean: -0.58967, std: 0.00375, params: {'max_depth': 5, 'min_child_weight': 3},\n",
       "  mean: -0.58949, std: 0.00349, params: {'max_depth': 5, 'min_child_weight': 5},\n",
       "  mean: -0.58920, std: 0.00325, params: {'max_depth': 7, 'min_child_weight': 1},\n",
       "  mean: -0.58937, std: 0.00384, params: {'max_depth': 7, 'min_child_weight': 3},\n",
       "  mean: -0.58880, std: 0.00361, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.60216, std: 0.00386, params: {'max_depth': 9, 'min_child_weight': 1},\n",
       "  mean: -0.59912, std: 0.00576, params: {'max_depth': 9, 'min_child_weight': 3},\n",
       "  mean: -0.59562, std: 0.00382, params: {'max_depth': 9, 'min_child_weight': 5}],\n",
       " {'max_depth': 5, 'min_child_weight': 1},\n",
       " -0.5887620837531603)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_1.grid_scores_, gsearch2_1.best_params_,     gsearch2_1.best_score_\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到经过max_depth min_child_weight的调优，logloss要比 之前的(0.6)要好"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.588762 using {'max_depth': 5, 'min_child_weight': 1}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "f:\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "f:\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "f:\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "f:\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "f:\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "f:\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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b3Mda312psm+ffv47W9/26Fp77rrLmprazu5ovT729/+xpYtW9puGCUzM5MXX3yRTZs2UV5eznPPPcerr76aogpNMnwDBzLgG99g1B/u49g1qxl++21kjRvHF48+xocX/CvbT5nLZzf/jMBr69BQKN3lmnawLtWAm555my07qzp1nhNG5HPjvxzf4vjrrruO9957jylTpjB//nyGDh3KX/7yF+rr6znrrLO46aabCAQCLFq0iIqKCkKhEP/1X//Frl272LlzJ/PmzWPIkCG89NJLceefm5vL97//fZ5//nkGDhzIrbfeyjXXXMNHH33EXXfdxcKFC9mxYwcXXXQRgUAAgHvuuYeTTz6ZJUuWcO+997JixQo+++wzTjnlFFatWsVhcS5Cq6ur4+KLL2bLli2MHz+eurq6yLjS0lJuvPFG6uvrGTt2LA8++CC5ubmMHj2ac889N1L7o48+yu7du1m6dCkrV67klltu4emnnwbgySef5LLLLmPfvn388Y9/pKioqNn7iwi57g0HGxsbaWxstF0lPYC3f38GfO1rDPja1wjV1FDz8kqqly9n39NP88Wjj+IdPJi8004jr3g+OdOmWUdd3ZxtkaTJ7bffztixYykvL2f+/Pls27aNdevWUV5ezsaNG1m1ahXPPfccI0aMYNOmTWzevJkFCxZwxRVXMGLECF566aUWQwQgEAgwd+5cNm7cSF5eHj/5yU9YsWIFS5Ys4YYbbgBg6NChrFixgtdff50nnniCK664AoCzzjqLww47jHvvvZfvfOc73HTTTXFDBOB3v/sd2dnZvPnmm/z4xz9m48aNAHz++efccsstPP/887z++usUFhbyq1/9KjJdfn4+69at4/LLL+fKK6/k5JNPZuHChfziF7+gvLycsWPHAhAMBlm3bh133XUXN910EwA7d+7kjDPOiMwrFAoxZcoUhg4dyvz585k+Pd7lSqa78ubm0v8rZzLyN7/m2LVrOPyuO8mZPo39zzzDx9++hG2zi9j54x9Ts3Il2tCQ7nJNHLZFAq1uOXSF0tJSSktLOeGEEwCoqalh27ZtFBUVcdVVV3Httdfyla985ZBv463JyMhgwQLnZgCTJk0iMzMTv9/PpEmT2LFjB+B8g7/88sspLy/H6/Xy7rvvRqb/zW9+w8SJE5kxYwbnn39+i++zatWqSABNnjyZyZMnA/Dq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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x19ddd766cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_1.best_score_, gsearch2_1.best_params_))\n",
    "test_means = gsearch2_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_1.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(max_depth), len(min_child_weight))\n",
    "train_scores = np.array(train_means).reshape(len(max_depth), len(min_child_weight))\n",
    "\n",
    "for i, value in enumerate(max_depth):\n",
    "    pyplot.plot(min_child_weight, -test_scores[i], label= 'test_max_depth:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'min_child_weight' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig('max_depth_vs_min_child_weght_1.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.60231111, -0.60267855, -0.60254479],\n",
       "       [-0.58876208, -0.58966823, -0.58948975],\n",
       "       [-0.58919785, -0.58936631, -0.58879754],\n",
       "       [-0.60216167, -0.59912006, -0.5956157 ]])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,'Log Loss')"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x19dddaa7a20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i, value in enumerate(max_depth):\n",
    "    pyplot.plot(min_child_weight, -train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'min_child_weight' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
